/*
 * @Author: 杰编程 2306248989@qq.com
 * @Date: 2023-08-03 19:54:34
 * @LastEditors: 杰编程 2306248989@qq.com
 * @LastEditTime: 2023-08-04 15:02:10
 * @FilePath: /lesson23/udp/udp_server.cc
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */

#include"udp_server.hpp"

#include<iostream>
#include<memory>
using namespace std;
using namespace ns_server;

#include<cstdio>


//上层提供相应的服务
// 服务1：大小写转化
std::string transActionString(std::string request)
{
    std::string result;
    char c;
    for(auto& r:request)
    {
        c=r;
        if(!isupper(r))
        {
            c=toupper(r);
        }
        result.push_back(c);
    }
    return result;
}
// 服务2：在服务器中执行相关指令，并得到相应的信息
std::string commandControl(std::string command)
{
    FILE* pp=popen(command.c_str(),"r");
    if(pp==nullptr)return "none";
    std::string result;
    char line[1024];
    while(fgets(line,sizeof(line),pp)!=nullptr)
    {
        result+=line;
    }
    pclose(pp);
    return result;
}

static void Usepage(string proc)
{
    cout<<"UsePage:\n\t"<<proc<<" port\n"<<endl;
}

// ./server port
int main(int argc,char* argv[])
{
    if(argc!=2)
    {
        Usepage(argv[0]);
        exit(USE_ERR);
    }

    uint16_t port=atoi(argv[1]);

    //unique_ptr<UdpServer> usvr(new UdpServer(commandControl,port));
    unique_ptr<UdpServer> usvr(new UdpServer(port));
    //usvr->ServerInit();
    usvr->Start();
    return 0;
}